{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [],
   "source": [
    "import numpy as np"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# 创建"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [],
   "source": [
    "# 创建ndarray\n",
    "score = np.array([[80, 89, 86, 67, 79],\n",
    "                  [78, 97, 89, 67, 81],\n",
    "                  [90, 94, 78, 67, 74],\n",
    "                  [91, 91, 90, 67, 69],\n",
    "                  [76, 87, 75, 67, 86],\n",
    "                  [70, 79, 84, 67, 84],\n",
    "                  [94, 92, 93, 67, 64],\n",
    "                  [86, 85, 83, 67, 80]])"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# 效率对比"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 46,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Wall time: 56.9 ms\n",
      "Wall time: 18 ms\n"
     ]
    }
   ],
   "source": [
    "import random\n",
    "import time\n",
    "import numpy as np\n",
    "a = []\n",
    "for i in range(10000000):\n",
    "    a.append(random.random())\n",
    "\n",
    "# 通过%time魔法方法, 查看当前行的代码运行一次所花费的时间\n",
    "%time sum1=sum(a)\n",
    "\n",
    "b=np.array(a)\n",
    "\n",
    "%time sum2=np.sum(b)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# ndarray的属性"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 47,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(8, 5)"
      ]
     },
     "execution_count": 47,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    " score.shape"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 48,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "2"
      ]
     },
     "execution_count": 48,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "score.ndim"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 49,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "40"
      ]
     },
     "execution_count": 49,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "score.size"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 50,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "4"
      ]
     },
     "execution_count": 50,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "score.itemsize"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 51,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "dtype('int32')"
      ]
     },
     "execution_count": 51,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "score.dtype"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# ndarray的形状"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 57,
   "metadata": {},
   "outputs": [],
   "source": [
    "a = np.array([1,2,3])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 64,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([1, 2, 3])"
      ]
     },
     "execution_count": 64,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "a"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 65,
   "metadata": {},
   "outputs": [],
   "source": [
    "b = np.array([[1,2,3],[2,3,4]])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 66,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([[1, 2, 3],\n",
       "       [2, 3, 4]])"
      ]
     },
     "execution_count": 66,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "b"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 67,
   "metadata": {},
   "outputs": [],
   "source": [
    "c = np.array([[[1,2,3],[4,5,6],[7,8,9]],[[4,5,6],[1,2,3],[5,5,5]],[[1,2,3],[4,5,6],[7,8,9]]])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 68,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([[[1, 2, 3],\n",
       "        [4, 5, 6],\n",
       "        [7, 8, 9]],\n",
       "\n",
       "       [[4, 5, 6],\n",
       "        [1, 2, 3],\n",
       "        [5, 5, 5]],\n",
       "\n",
       "       [[1, 2, 3],\n",
       "        [4, 5, 6],\n",
       "        [7, 8, 9]]])"
      ]
     },
     "execution_count": 68,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "c"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 69,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(3,)"
      ]
     },
     "execution_count": 69,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "a.shape"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 70,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(2, 3)"
      ]
     },
     "execution_count": 70,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "b.shape"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 71,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(3, 3, 3)"
      ]
     },
     "execution_count": 71,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "c.shape"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 72,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "3"
      ]
     },
     "execution_count": 72,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "c.ndim"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 73,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "2"
      ]
     },
     "execution_count": 73,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "b.ndim"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 74,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "dtype('int32')"
      ]
     },
     "execution_count": 74,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "a.dtype"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 75,
   "metadata": {},
   "outputs": [],
   "source": [
    "d = np.array([1,2,3], dtype=np.float32)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 76,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([1., 2., 3.], dtype=float32)"
      ]
     },
     "execution_count": 76,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "d"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 77,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "dtype('float32')"
      ]
     },
     "execution_count": 77,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "d.dtype"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 78,
   "metadata": {},
   "outputs": [],
   "source": [
    "e = np.array(['I', 'love', 'python'], dtype=np.string_)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 79,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([b'I', b'love', b'python'], dtype='|S6')"
      ]
     },
     "execution_count": 79,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "e"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# 正太分布和均匀分布"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 85,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([[[0.30454838, 0.16685333, 0.89770625],\n",
       "        [0.8160754 , 0.50012322, 0.19467644],\n",
       "        [0.79340031, 0.96155333, 0.43232374]],\n",
       "\n",
       "       [[0.43245371, 0.75237022, 0.70672423],\n",
       "        [0.16643987, 0.23085004, 0.38603204],\n",
       "        [0.08720421, 0.82927627, 0.8138631 ]],\n",
       "\n",
       "       [[0.19999602, 0.67258663, 0.42484107],\n",
       "        [0.26471421, 0.33569476, 0.78732484],\n",
       "        [0.76466533, 0.38689517, 0.3300047 ]]])"
      ]
     },
     "execution_count": 85,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "np.random.rand(3,3,3)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 88,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([[[1.07753493, 1.46055624, 1.22932313],\n",
       "        [1.83005274, 1.17892784, 2.06385749],\n",
       "        [2.60684201, 2.7172589 , 1.36544394]],\n",
       "\n",
       "       [[1.22386938, 2.30444121, 2.08769411],\n",
       "        [1.43708378, 2.22751367, 2.30271866],\n",
       "        [2.67605494, 1.83882604, 2.88858719]],\n",
       "\n",
       "       [[2.58761141, 2.46737735, 2.44668787],\n",
       "        [2.87027037, 2.72139931, 2.38113598],\n",
       "        [2.03626442, 2.89791365, 1.36470435]]])"
      ]
     },
     "execution_count": 88,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "np.random.uniform(low=1,high=3,size=(3,3,3))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 89,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([[[8, 4, 5],\n",
       "        [8, 5, 2],\n",
       "        [6, 6, 3]],\n",
       "\n",
       "       [[5, 9, 8],\n",
       "        [2, 2, 7],\n",
       "        [6, 7, 8]],\n",
       "\n",
       "       [[5, 8, 6],\n",
       "        [3, 4, 8],\n",
       "        [4, 5, 7]]])"
      ]
     },
     "execution_count": 89,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "np.random.randint(low=1, high=10, size=(3,3,3))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# 生成均匀分布小案例"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 110,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 2000x800 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "import matplotlib.pyplot as plt\n",
    "\n",
    "# 0.准备数据\n",
    "x = np.random.uniform(0, 1, 100)\n",
    "\n",
    "# 1.创建画布\n",
    "plt.figure(figsize=(20, 8), dpi=100)\n",
    "\n",
    "# 2.绘制\n",
    "plt.hist(x, bins=10)\n",
    "\n",
    "# 3.显示\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 107,
   "metadata": {},
   "outputs": [],
   "source": [
    "x = np.random.uniform(10, 15, 10)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 108,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([13.23902721, 10.18521222, 14.26538098, 14.15929397, 11.59235493,\n",
       "       11.61400163, 11.93981703, 12.79162824, 14.50059964, 11.98801401])"
      ]
     },
     "execution_count": 108,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "x"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# 生成正态分布数据"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 111,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([0.3030593 , 3.18613694, 1.88660898, ..., 1.21351053, 1.73728784,\n",
       "       2.90080677])"
      ]
     },
     "execution_count": 111,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "np.random.normal(1.75, 1, 10000)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# 生成正太分布小案例"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 117,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 2000x800 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "import matplotlib.pyplot as plt\n",
    "\n",
    "# 0.准备数据\n",
    "x = np.random.normal(1.75, 1, 10000000)\n",
    "\n",
    "# 1.创建画布\n",
    "plt.figure(figsize=(20, 8), dpi=100)\n",
    "\n",
    "# 2.绘制\n",
    "plt.hist(x, bins=1000)\n",
    "\n",
    "# 3.显示\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# 数组索引切片"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 118,
   "metadata": {},
   "outputs": [],
   "source": [
    "stock_change = np.random.normal(0, 1, (8, 10))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 119,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([[-0.69273953,  0.74119101, -1.13997865, -0.82911205, -0.47357904,\n",
       "        -1.65947339, -0.20393453, -1.23417092, -0.29179363, -0.40705241],\n",
       "       [ 0.1247376 , -0.82263833, -0.24774769,  2.17364658, -0.3193299 ,\n",
       "        -0.75473763,  1.17677919,  2.24641202, -1.20184119,  0.4899253 ],\n",
       "       [-0.80753337,  1.24189868,  2.16667306, -1.50137599,  0.44752947,\n",
       "         0.44118292, -0.53063556,  2.22690765,  0.3577779 ,  2.78593418],\n",
       "       [ 0.4389352 , -0.30077541,  1.64365396, -0.16053708, -0.46681493,\n",
       "         0.45158771, -0.239762  ,  0.60419548,  0.82981954, -0.40920103],\n",
       "       [-0.39833823, -0.1901124 ,  0.44992848,  1.04029396, -0.17633551,\n",
       "         0.16535634, -0.18794321,  0.17907549,  0.20844752, -0.73670424],\n",
       "       [-0.13781279, -0.1740671 , -0.94084581,  1.0504124 , -0.63802461,\n",
       "        -1.8763908 ,  1.32709211, -1.14829857, -0.534114  , -0.4131564 ],\n",
       "       [-0.69842667,  0.26858413,  1.01104953, -0.56282422,  0.29765166,\n",
       "         0.72354664,  1.55393526,  0.07193725, -0.84301897,  0.29414571],\n",
       "       [-0.14859931, -0.90405454, -0.28624265, -0.46045372,  0.63926326,\n",
       "         1.61041422,  0.38527683,  0.76470894,  0.23377825, -1.12782917]])"
      ]
     },
     "execution_count": 119,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "stock_change"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 120,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([[-0.69273953,  0.74119101, -1.13997865],\n",
       "       [ 0.1247376 , -0.82263833, -0.24774769]])"
      ]
     },
     "execution_count": 120,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "stock_change[0:2, 0:3]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 122,
   "metadata": {},
   "outputs": [],
   "source": [
    "a1 = np.array([ [[1,2,3],[4,5,6]], [[12,3,34],[5,6,7]]])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 123,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([[[ 1,  2,  3],\n",
       "        [ 4,  5,  6]],\n",
       "\n",
       "       [[12,  3, 34],\n",
       "        [ 5,  6,  7]]])"
      ]
     },
     "execution_count": 123,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "a1"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 124,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "1"
      ]
     },
     "execution_count": 124,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "a1[0][0][0]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 125,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "12"
      ]
     },
     "execution_count": 125,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "a1[1][0][0]"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# 形状修改"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 126,
   "metadata": {},
   "outputs": [],
   "source": [
    "stock_change = np.random.normal(0, 1, (4, 5))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 127,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([[ 1.05096933, -0.96209562,  0.13195877, -0.31360637,  0.05320839],\n",
       "       [-1.24519881,  0.74836821,  0.5015684 ,  0.27929874, -1.94431099],\n",
       "       [-0.73399889, -0.73335742,  0.04778542,  0.62133071, -0.66110078],\n",
       "       [-0.09798629, -1.75734966, -1.68614136, -0.00684505,  1.02348105]])"
      ]
     },
     "execution_count": 127,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "stock_change"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 129,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([[ 1.05096933, -0.96209562,  0.13195877, -0.31360637],\n",
       "       [ 0.05320839, -1.24519881,  0.74836821,  0.5015684 ],\n",
       "       [ 0.27929874, -1.94431099, -0.73399889, -0.73335742],\n",
       "       [ 0.04778542,  0.62133071, -0.66110078, -0.09798629],\n",
       "       [-1.75734966, -1.68614136, -0.00684505,  1.02348105]])"
      ]
     },
     "execution_count": 129,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "stock_change.reshape([5, 4])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 130,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([[ 1.05096933, -0.96209562],\n",
       "       [ 0.13195877, -0.31360637],\n",
       "       [ 0.05320839, -1.24519881],\n",
       "       [ 0.74836821,  0.5015684 ],\n",
       "       [ 0.27929874, -1.94431099],\n",
       "       [-0.73399889, -0.73335742],\n",
       "       [ 0.04778542,  0.62133071],\n",
       "       [-0.66110078, -0.09798629],\n",
       "       [-1.75734966, -1.68614136],\n",
       "       [-0.00684505,  1.02348105]])"
      ]
     },
     "execution_count": 130,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "stock_change.reshape([-1, 2])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 131,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([[ 1.05096933, -0.96209562,  0.13195877, -0.31360637,  0.05320839],\n",
       "       [-1.24519881,  0.74836821,  0.5015684 ,  0.27929874, -1.94431099],\n",
       "       [-0.73399889, -0.73335742,  0.04778542,  0.62133071, -0.66110078],\n",
       "       [-0.09798629, -1.75734966, -1.68614136, -0.00684505,  1.02348105]])"
      ]
     },
     "execution_count": 131,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "stock_change"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 132,
   "metadata": {},
   "outputs": [],
   "source": [
    "stock_change.resize([5,4])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 133,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([[ 1.05096933, -0.96209562,  0.13195877, -0.31360637],\n",
       "       [ 0.05320839, -1.24519881,  0.74836821,  0.5015684 ],\n",
       "       [ 0.27929874, -1.94431099, -0.73399889, -0.73335742],\n",
       "       [ 0.04778542,  0.62133071, -0.66110078, -0.09798629],\n",
       "       [-1.75734966, -1.68614136, -0.00684505,  1.02348105]])"
      ]
     },
     "execution_count": 133,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "stock_change"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 134,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([[ 1.05096933,  0.05320839,  0.27929874,  0.04778542, -1.75734966],\n",
       "       [-0.96209562, -1.24519881, -1.94431099,  0.62133071, -1.68614136],\n",
       "       [ 0.13195877,  0.74836821, -0.73399889, -0.66110078, -0.00684505],\n",
       "       [-0.31360637,  0.5015684 , -0.73335742, -0.09798629,  1.02348105]])"
      ]
     },
     "execution_count": 134,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "stock_change.T"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# 类型修改"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 136,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([[ 1.05096933, -0.96209562,  0.13195877, -0.31360637],\n",
       "       [ 0.05320839, -1.24519881,  0.74836821,  0.5015684 ],\n",
       "       [ 0.27929874, -1.94431099, -0.73399889, -0.73335742],\n",
       "       [ 0.04778542,  0.62133071, -0.66110078, -0.09798629],\n",
       "       [-1.75734966, -1.68614136, -0.00684505,  1.02348105]])"
      ]
     },
     "execution_count": 136,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "stock_change"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 137,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([[ 1,  0,  0,  0],\n",
       "       [ 0, -1,  0,  0],\n",
       "       [ 0, -1,  0,  0],\n",
       "       [ 0,  0,  0,  0],\n",
       "       [-1, -1,  0,  1]])"
      ]
     },
     "execution_count": 137,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "stock_change.astype(np.int32)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 138,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "b'\\x01\\x00\\x00\\x00\\x02\\x00\\x00\\x00\\x03\\x00\\x00\\x00\\x04\\x00\\x00\\x00\\x05\\x00\\x00\\x00\\x06\\x00\\x00\\x00\\x0c\\x00\\x00\\x00\\x03\\x00\\x00\\x00\"\\x00\\x00\\x00\\x05\\x00\\x00\\x00\\x06\\x00\\x00\\x00\\x07\\x00\\x00\\x00'"
      ]
     },
     "execution_count": 138,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "arr = np.array([[[1, 2, 3], [4, 5, 6]], [[12, 3, 34], [5, 6, 7]]])\n",
    "arr.tostring()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# 数组去重"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 139,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([1, 2, 3, 4, 5, 6])"
      ]
     },
     "execution_count": 139,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "temp = np.array([[1, 2, 3, 4],[3, 4, 5, 6]])\n",
    "np.unique(temp)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 145,
   "metadata": {},
   "outputs": [],
   "source": [
    "t1 = np.array([[1,2,3], [4,5,6]])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 144,
   "metadata": {},
   "outputs": [],
   "source": [
    "t2 = np.array([[1,2,3], [4,5]])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 146,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "dtype('O')"
      ]
     },
     "execution_count": 146,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "t2.dtype"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 147,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "dtype('int32')"
      ]
     },
     "execution_count": 147,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "t1.dtype"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.6.8"
  },
  "toc": {
   "base_numbering": 1,
   "nav_menu": {},
   "number_sections": true,
   "sideBar": true,
   "skip_h1_title": false,
   "title_cell": "Table of Contents",
   "title_sidebar": "Contents",
   "toc_cell": false,
   "toc_position": {},
   "toc_section_display": true,
   "toc_window_display": true
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
